#pragma once

#include <ros/service_traits.h>

#include "StartPathTeachRequest.h"
#include "StartPathTeachResponse.h"

namespace ros1_protobuf_msg_bridge{
    struct StartPathTeach
    {
        typedef StartPathTeachRequest Request;
        typedef StartPathTeachResponse Response;
        Request request;
        Response response;

        typedef Request RequestType;
        typedef Response ResponseType;
    }; // struct StartPathTeach
} // namespace ros1_protobuf_msg_bridge


namespace ros{
namespace service_traits{
    template<>
    struct MD5Sum< ros1_protobuf_msg_bridge::StartPathTeach > {
        static const char* value()
        {
            return "69959f79f673e7dc03c63227dbb542ee";
        }

        static const char* value(const ros1_protobuf_msg_bridge::StartPathTeach&) { return value(); }
    };

    template<>
    struct DataType< ros1_protobuf_msg_bridge::StartPathTeach > {
        static const char* value()
        {
            return "ros1_protobuf_msg_bridge/StartPathTeach";
        }

        static const char* value(const ros1_protobuf_msg_bridge::StartPathTeach&) { return value(); }
    };

    template<>
    struct MD5Sum< ros1_protobuf_msg_bridge::StartPathTeachRequest>
    {
        static const char* value()
        {
            return MD5Sum< ros1_protobuf_msg_bridge::StartPathTeach >::value();
        }

        static const char* value(const ros1_protobuf_msg_bridge::StartPathTeachRequest&)
        {
            return value();
        }
    };

    template<>
    struct DataType< ros1_protobuf_msg_bridge::StartPathTeachRequest>
    {
        static const char* value()
        {
            return DataType< ros1_protobuf_msg_bridge::StartPathTeach >::value();
        }
        static const char* value(const ros1_protobuf_msg_bridge::StartPathTeachRequest&)
        {
            return value();
        }
    };

    template<>
    struct MD5Sum< ros1_protobuf_msg_bridge::StartPathTeachResponse>
    {
        static const char* value()
        {
            return MD5Sum< ros1_protobuf_msg_bridge::StartPathTeach >::value();
        }
        static const char* value(const ros1_protobuf_msg_bridge::StartPathTeachResponse&)
        {
            return value();
        }
    };

    template<>
    struct DataType< ros1_protobuf_msg_bridge::StartPathTeachResponse>
    {
        static const char* value()
        {
            return DataType< ros1_protobuf_msg_bridge::StartPathTeach >::value();
        }
        static const char* value(const ros1_protobuf_msg_bridge::StartPathTeachResponse&)
        {
            return value();
        }   
    };
} // namespace service_traits
} // namespace ros
